/*
 * Copyright © 2021 the original author or authors.
 *
 * Licensed under the The MIT License (MIT) (the "License");
 *  You may obtain a copy of the License at
 *
 *         https://mit-license.org/
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
 * and associated documentation files (the “Software”), to deal in the Software without
 * restriction, including without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies or
 * substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

package com.github.grossopa.selenium.component.mui.v4.pickers;

import static java.util.Objects.requireNonNull;

/**
 * the basic components contains 3 components:
 *
 * <ul>
 *     <li>{@link MuiPickersCalendarHeaderSwitchHeader} for navigating the month and year</li>
 *     <li>{@link MuiPickersCalendarHeaderDaysHeader} for displaying the weekdays label from SU to SA</li>
 *     <li>{@link MuiPickersCalendarTransitionContainer} for day selection</li>
 * </ul>
 *
 * @author Jack Yin
 * @since 1.2
 */
public class MuiPickersBasicPickerViewComponents {
    private final MuiPickersCalendarHeaderSwitchHeader switchHeader;
    private final MuiPickersCalendarHeaderDaysHeader daysHeader;
    private final MuiPickersCalendarTransitionContainer transitionContainer;

    /**
     * Constructs an instance.
     *
     * @param switchHeader the switch header part for navigating month and year
     * @param daysHeader for displaying the weekdays label from SU to SA
     * @param transitionContainer for day selection
     */
    public MuiPickersBasicPickerViewComponents(MuiPickersCalendarHeaderSwitchHeader switchHeader,
            MuiPickersCalendarHeaderDaysHeader daysHeader, MuiPickersCalendarTransitionContainer transitionContainer) {
        requireNonNull(switchHeader);
        requireNonNull(daysHeader);
        requireNonNull(transitionContainer);
        this.switchHeader = switchHeader;
        this.daysHeader = daysHeader;
        this.transitionContainer = transitionContainer;
    }

    /**
     * Gets {@link MuiPickersCalendarHeaderSwitchHeader} for navigating the month and year
     *
     * @return {@link MuiPickersCalendarHeaderSwitchHeader} for navigating the month and year
     */
    public MuiPickersCalendarHeaderSwitchHeader getSwitchHeader() {
        return switchHeader;
    }

    /**
     * Gets {@link MuiPickersCalendarHeaderDaysHeader} for displaying the weekdays label from SU to SA
     *
     * @return {@link MuiPickersCalendarHeaderDaysHeader} for displaying the weekdays label from SU to SA
     */
    public MuiPickersCalendarHeaderDaysHeader getDaysHeader() {
        return daysHeader;
    }

    /**
     * Gets {@link MuiPickersCalendarTransitionContainer} for day selection
     *
     * @return {@link MuiPickersCalendarTransitionContainer} for day selection
     */
    public MuiPickersCalendarTransitionContainer getTransitionContainer() {
        return transitionContainer;
    }
}
